#ifndef FILEDESCRIPTOR_H_
#define FILEDESCRIPTOR_H_

#include "inode.h"

#define FD_PER_PROC 10

typedef struct{
	int filePos;	//posicion en el archivo
	inodeTableEntry * inode;	//inodo del archivo abierto
	short int flags;	//flags con los que se abrio el archivo
}fileDes_t;

//busca el primer fd libre del proceso que hace la llamada,
//le setea los parametros pasados, y devuelve el fd, o -1 en caso de error
int setFileDes(inodeTableEntry * inode, int filePos, int flags);

//actualiza los valores asociados al file descriptor fd, devuelve -1 en
//caso de error
int updateFileDes(int fd, int filePos);

//obtiene la posicion en la que se encuentra el archivo referenciado
//por fd. devuelve -1 en caso de error
int getFilePos(int fd);

//obtiene los flags del archivo referenciado. devuelve -1 en caso de error
short int getFileFlags(int fd);

//obtiene el inodo referenciado por fd. devuelve NULL en caso de error
inodeTableEntry * getFdInode(int fd);

void freeFileDes(int fd);

#endif /* FILEDESCRIPTOR_H_ */
